<?php

namespace app\rest\controller;

use think\Controller;
use think\Db;
use think\Request;
use app\rest\model\User as UserModel;


class User extends Controller
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        $list = Db::name('user')
            ->field(['id','name'])
            ->order('id','asc')
            ->select();
//        dump($list);

        return view('user/index', [
            'title' => '用户列表',
            'list' => $list
        ]);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
//        return '添加表单';
        return view('user/create', [
            'title'=>'填个用户!'
        ]);
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
/*//        var_dump($_POST);
//        dump($request->post());
        $p = $request->post();
//        $p = Request::instance()->post();
//        $p = input('post.');
//        dump($p);

        // 手动处理
        $data = [
            'name' => $p['name'],
            'pass' => md5($p['pass']),
            'sex' => $p['sex'],
            'age' => $p['age'],
            'province' => $p['province'],
            'tel' => $p['tel']
        ];

//        dump($data);

        $result = Db::name('user')
            ->data($data)
            ->insert();
        // 判断
        if ($result > 0) {
            return $this->success('添加成功', url('rest/user/index'));
        } else {
            return $this->error('添加失败,请重试!!');
        }*/
        // MODEL
        $p = $request->post();
        // 实例化模型
        $user = new UserModel($p);
//        $user->pass = md5($p['pass']);
//        dump($user);

        $user->pass = $user->setPass($p['pass']);
//        halt($user->pass);

        // 启用验证
        $check = $this->validate($p, 'rest/User');

        if (true !== $check) {
            return $this->error($check);
        }

        $result = $user->allowField(true)->save();
//        echo $user->id;
        if ($result) {
            return $this->success('添加成功', url('rest/user/index'));
        } else {
            return $this->error('添加失败,请重试!!');
        }
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
//        return '读取ID'.$id;
        // 是否为 Ajax 请求
        if (! Request::instance()->isAjax())
        {
            $this->error('你四不四迷路了!', '/');
            return;
        }


        // 显式查询 id,nameage,sex / 隐式 *
        $row = Db::name('user')
            ->field(['pass','status'],true)
            ->find($id);
//        var_dump($row);

        if ($row === null) {
            $info['status'] = false;
            $info['code'] = 404;
            $info['title'] = '查无此人';
            $info['datas'] = '查无数据';
        } else {
            $info['status'] = true;
            $info['code'] = 200;
            $info['title'] = $row['name'];
            $info['datas'] = $row;
        }
        return json($info);
    }


    /**
     * 显示指定的资源(页)
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function readpage($id)
    {
        // 显式查询 id,nameage,sex / 隐式 *
        $row = Db::name('user')
            ->field(['pass','status'],true)
            ->find($id);

        return view('user/show', [
            'title' => $row['name'] . '的详情页面',
            'row' => $row,
        ]);
    }
    

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
//        return '编辑ID: ' .$id;
        // 显式查询 id,nameage,sex / 隐式 *
        $row = Db::name('user')
            ->field(['pass','status'],true)
            ->find($id);

        return view('user/edit', [
            'title' => '修改 '.$row['name'] . '的信息',
            'data' => $row,
        ]);
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        $info = $request->put();
//        dump($info);


        // 手动处理
        $data = [
            'name' => $info['name'],
            'sex' => $info['sex'],
            'age' => $info['age'],
            'province' => $info['province'],
            'tel' => $info['tel']
        ];

//        dump($data);

        $result = Db::name('user')
            ->where('id',$id)
            ->update($data);
        // 判断
        if ($result) {
            return $this->success('修改成功', url('rest/user/index'));
        } else {
            return $this->error('修改失败,请重试!!');
        }
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        $result = Db::name('user')->delete($id);

        if ($result > 0) {
            $info['status'] = true;
            $info['code'] = 200;
            $info['info'] = 'ID为: ' . $id . '的用户删除成功!';
        } else {
            $info['status'] = false;
            $info['code'] = 404;
            $info['info'] = 'ID为: ' . $id . '的用户删除失败,请重试!!';
        }
        return json($info);
    }

    public function login()
    {
        return view('login', ['title'=>'等了各路']);
    }


    public function logindo()
    {
        $name = input('post.name');
        $pass = input('post.pass');

        // 根据用户名 判断用户是否存在
        $user = UserModel::get(['name'=>$name]);
//        dump($user);

        if ($user) {
            // 校验密码
            $id = $user->id;

            if ($user->checktPass($id, $pass)) {
                return '登录成功';
            } else {
                return $this->error('密码错误请重试!!!');
            }
        } else {
            return $this->error('用户不存在');
        }
    }


}
